#!/bin/bash
# Author: Eobard Thawne(gxp)
# Date:   2025/10/09 14:02:35
set -e

# 颜色输出函数
info() { echo -e "\033[1;34m[INFO]\033[0m $1"; }
success() { echo -e "\033[1;32m[SUCCESS]\033[0m $1"; }
error() { echo -e "\033[1;31m[ERROR]\033[0m $1"; }

PY_VERSION="3.8.18"
PYENV_ROOT="$HOME/.pyenv"
CACHE_DIR="$PYENV_ROOT/cache"
SRC_FILE="Python-${PY_VERSION}.tar.xz"
DOWNLOAD_URL="https://mirrors.huaweicloud.com/python/${PY_VERSION}/${SRC_FILE}"

info "==> 正在检查是否安装 Homebrew..."
if ! command -v brew &> /dev/null; then
    error "未检测到 Homebrew，请先手动安装：https://brew.sh/"
    exit 1
fi

info "==> 安装 pyenv..."
brew install pyenv || true


info "==> 检查 ~/.zshrc 是否已配置 pyenv 环境变量..."
if grep -q 'export PYENV_ROOT' ~/.zshrc && grep -q 'pyenv init' ~/.zshrc; then
    info "==> 检测到已存在 pyenv 配置，跳过写入。"
else
    info "==> 写入 pyenv 环境变量到 ~/.zshrc ..."
    cat << 'EOF' >> ~/.zshrc

# >>> pyenv initialization >>>
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
# <<< pyenv initialization <<<
EOF
    success "✅ 已写入 pyenv 配置到 ~/.zshrc"
fi

# 加载新的环境
source ~/.zshrc

info "==> 创建缓存目录..."
mkdir -p "$CACHE_DIR"
cd "$CACHE_DIR"


info "==> 检查是否已有 Python 源码缓存..."
if [ ! -f "$SRC_FILE" ]; then
    info "==> 下载 Python ${PY_VERSION} 源码..."
    curl -O "$DOWNLOAD_URL" || {
        error "下载失败，请检查网络或镜像源。"
        exit 1
    }
else
    info "==> 已存在缓存文件，跳过下载。"
fi


info "==> 使用 pyenv 安装 Python ${PY_VERSION}..."
pyenv install "${PY_VERSION}"

info "==> 设置全局 Python 版本..."
pyenv global "${PY_VERSION}"

info "==> 当前 Python 版本:"
python3 --version


info "==> 安装 MNN 库..."
pip install -U MNN  || {
    error "❌MNN安装失败"
}


info "==> 验证 MNN 工具是否可用..."
if mnn --help &> /dev/null; then
    success "✅ MNN CLI 可用 (mnn)"
elif python -m MNN.tools.mnn --help &> /dev/null; then
    success "✅ MNN 可通过 'python -m MNN.tools.mnn' 使用"
elif python3 -m MNN.tools.mnn --help &> /dev/null; then
    success "✅ MNN 可通过 'python3 -m MNN.tools.mnn' 使用"
else
    error "❌ 未能成功运行 MNN 工具，请检查安装是否正确。"
    exit 1
fi

success "✅ 已成功安装python版mnn库"